package controller;

import entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.Errors;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
@RequestMapping("/user")
public class UserController {

    /*
        参数User其实是一个Command对象
        类似于struts1中的ActionForm
        因为SpringMVC中的Command对象不需要继承或实现任何东西
        这里是将实体对象当做Command对象使用

        Command对象作用
            接收数据
                封装请求数据
                将请求中的所有数据封装成一个对象给我们使用
            返回数据
                创建一个空的Command对象
                将这个对象放到作用域中



     */
    @RequestMapping("/show")
    public String show(User user){
        System.out.println("UserController.show()");

        System.out.println("user = " + user);

        user.setUsername("abc");
        user.setPassword("123");
        user.setPhone("123456789");
        user.setAge(34);

        return "user";
    }

    // @RequestMapping("/submit")
    // public String submit(User user){
    //     System.out.println("UserController.submit()");
    //
    //     System.out.println("user = " + user);
    //
    //     return "redirect:/user/show";
    // }

    // @RequestMapping("/submit")
    // public String submit(User user, BindingResult bindingResult){
    //     System.out.println("UserController.submit()");
    //
    //     if(bindingResult.hasErrors()){
    //         System.out.println("UserController.submit().hasErrors()");
    //         return "user";
    //     }
    //     System.out.println("user = " + user);
    //
    //     return "redirect:/user/show";
    // }

    @RequestMapping("/submit")
    public String submit(User user, Errors errors){
        System.out.println("UserController.submit()");

        if(errors.hasErrors()){
            System.out.println("UserController.submit().hasErrors()");

            return "user";
        }
        System.out.println("user = " + user);

        return "redirect:/user/show";
    }
}
